package com.hello;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

public class Producer {
    /**
     * 消息队列名称，如果为空字符串，服务器会自己生成一个名字
     */
    private static final String QUEUE_NAME = "test_queue";

    public static void main(String[] args) {
        //创建连接⼯⼚并设置RabbitMQ主机地址，默认端⼝为5672，靠配置listeners.tcp.default设定
        // 15672端口号是web管理程序的端口号

        ConnectionFactory connectionFactory = new ConnectionFactory();
        //connectionFactory.setPort(5673);
        //connectionFactory.setHost("localhost");
        //创建连接对象，并使⽤连接对象构建⼀个消息通信的通道
        try (Connection conn = connectionFactory.newConnection();
             Channel channel = conn.createChannel()) {
            //队列名设置为“”（空）时，rabbitmq会自动创建一个名字
            //durable:表示队列是否是持久的，
            // exclusive表示队列是排他的，只能在此连接中使用，
            // autoDelete：不再使用时broker自动删除
          channel.queueDeclare(QUEUE_NAME, false, false, false, null);
            String message = "hello world";

            // channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            //第一个交换机指定的是“”，表示使用默认交换机
            //第二个参数是routingKey，这里指定为队列名，因为默认交换机就是依据队列名作为routing key的
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes());
            System.out.println("已发送消息---");
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}